"use strict";
/**
 * string 字符串
 * number 数字包括NaN
 * boolean 布尔值
 * undefined
 * null
 * Array
 * void
 * any 任意类型
 * never
 * object
 * tuple 元祖类型
 * */
// 字符串
/**
 * let arr1 = [1, 2, 3, 4]
 * arr1 = arr1.push(6)
 * console.log(arr1) 变成了5 因为push的返回值是新数组的长度
 * */
// let str:string = '123'
// 数字
// let num:number = 123
// num = '124'
// boolean
// let boolean:boolean = true
// undefined null
// let un:undefined = undefined
// let nul:null = null
// any 任意类型
// let str:any = 123
// str = '德玛西亚'
// str = function() {
// }
// void表示没有类型
// let num:void;
// num = 1243
// function fun(str:string):string {
//     return str
// }
// console.log(fun('我是一个函数'));
// let num:number = 0
// function fun():void {
//     num++
// }
// fun()
// console.log(num);
// 数组类型Array 有三种声明方式 
// 第一种 
// let game:string[] = ["英雄联盟", "王者荣耀"]
// let tel:number[] = [110, 120, 119]
// 第二种声明方法
// let game:Array<string> = ['110']
// 元祖类型 可以给数组定义不同的数据类型 但是赋值的数组必须按照规定的数据类型添加在数组中 包括数组的数量
// let tup:[string, number, boolean] = ['124', 123, true]
// never
// function func(err:string):never {
//     throw new Error(err)
// }
// func('这是一个错误')
// object
// let obj:{name:string, age:number} = {
//     name: "zhangsan",
//     age: 14
// }
// interface User {
//     name: string;
//     age: number;
// }
// let obj:User = {
//     name: "张三",
//     age: 14
// }
// console.log(obj);
